package common.utils
{
	public class XMath
	{
		/**
		 *  将一个二进制数据转换成十进制数据 ，如 convertBitToUint("101011001011")
		 * @param bit 表示二进制数据的字符串
		 * @return 
		 * 
		 */
		public static function convertBitToUint(bit:String):uint
		{
			var b:uint = 0;
			for (var i:int=0; i<bit.length; i++)
			{
				if (bit.slice(i,i + 1) == "1")
				{
					b +=  Math.pow(2,bit.length - i - 1);
				}
			}
			return b;
		}
		/**
		 * 将十进制转换成二进制 
		 * @param value
		 * @return 
		 * 
		 */
		public static function convertUintToBit(value:uint):String
		{
			var str:String;
			str = value.toString(2);
			return str;
		}
		/**
		 * 取得一个数据的二进制某索引处（从高位到低位索引）的布尔值，如 getBitFromUintAt(2,0) 返回true,getBitFromUintAt(2,1) 返回false (2=10)
		 * @param value
		 * @param index
		 * @return 
		 * 
		 */
		public static function getBitFromUintAt(value:uint,index:uint):Boolean
		{
			var str:String  = value.toString(2);
			if(str.slice(index,index+1) == "1")
			{
				return true;
			}else
			{
				return false;
			}
		}
		/**
		 * 取得一个数据的二进制某位的布尔值，如 getBitFromUintAt(2,1) 返回false,getBitFromUintAt(2,2) 返回true (2=10)
		 * @param value
		 * @param index
		 * @return 
		 * 
		 */
		public static function getBitFromUintAtBitIndex(value:uint,index:uint):Boolean
		{
			var str:String  = value.toString(2);
			if(index > str.length) return false;
			if(str.slice(str.length-index,str.length-index+1) == "1")
			{
				return true;
			}else
			{
				return false;
			}
		}
	}
}